package com.zeei.bfs.dao;

import java.util.List;
import java.util.Map;

import com.zeei.common.vo.UserVO;

public interface UserDao {
	/**
	 * 方法描述：通过条件查询用户信息
	 * 
	 * @param condition
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	List<UserVO> queryUserByCondition(Map condition);

	/**
	 * 方法描述：查询用户信息
	 * 
	 * @param user
	 * @return
	 */
	List<UserVO> queryUser(UserVO user);

	/**
	 * 方法描述：修改用户信息
	 * 
	 * @param company
	 * @return
	 */
	Integer updateUserById(UserVO user);

	/**
	 * 方法描述：修改用户信息,非空的再修改
	 * 
	 * @param user
	 * @return
	 */
	Integer updateUserNotEmptyById(UserVO user);

	/**
	 * 方法描述：通过单位的id集合移除用户关联的单位关系
	 * 
	 * @param user
	 * @return
	 */
	Integer removeRelationByCompIds(List<Integer> compIds);

	/**
	 * 方法描述：通过部门的id集合移除用户关联的部门关系
	 * 
	 * @param deptIds
	 * @return
	 */
	Integer removeRelationByDeptIds(List<?> deptIds);

	/**
	 * 方法描述：通过用户id移除用户关联的部门关系
	 * 
	 * @param userId
	 * @return
	 */
	Integer removeDeptRelationByUserId(Integer userId);

	/**
	 * 方法描述：添加用户
	 * 
	 * @param user
	 * @return
	 */
	Integer insertUser(UserVO user);
	
	/**方法描述：根据id批量删除
	 * 
	 * @param list
	 * @return
	 */
	Integer deleteUserByIds(List<?> list);

	/**
	 * 初始化用户密码
	 * 
	 * @param userVO
	 */
	public void updateToDefaultPassword(UserVO userVO);

	/**
	 * 方法描述：通过登陆名查询相关信息
	 * 
	 * @param userVO
	 * @return
	 */
	List<UserVO> queryUserByLoginName(UserVO userVO);

	/**
	 * 方法描述：通过用户Id查询相关信息
	 * 
	 * @param userVO
	 * @return
	 */
	List<UserVO> queryUserByUserId(Integer userId);

	/**
	 * 方法描述：修改皮肤
	 * 
	 * @param user
	 * @return
	 */
	Integer updateSkin(UserVO user);
}
